介绍(Introduction)
官方文档:PEP 8 – Style Guide for Python Code
很多的项目都有自己的代码规范,如果和自己的项目冲突,优先按照自己项目的规范。
保持盲目的一致是头脑简单的表现(A Foolish Consistency Is The Hobgoblin Of Little Minds)
代码风格(Code lay-out)
缩进(Indentation)
采用4个空格进行缩进,对于续行来说,4空格的规则可以不遵守。
续行有两种方式:隐式续行,悬挂续行。隐式续行是垂直对齐于圆括号、方括号和花括号。
悬挂续行注意两点:第一行不包含参数,在续行中要再缩进一级
YES
NO
多行if语句
如果if语句太长,需要用多行书写,2个字符(例如,if)加上一个空格和一个左括号刚好是4空格的缩进,但这对多行条件语句的续行是没用的。因为这会和if语句中嵌套的其他的缩进的语句产生视觉上的冲突。这份PEP中并没有做出明确的说明应该怎样来区分条件语句和if语句中所嵌套的语句。以下几种方法都是可行的,但不仅仅只限于这几种方法:
|
|
多行结束右圆/方/花括号可以单独一行书写,和上一行的缩进对齐:
自己换行的时候,习惯于右括号在做左侧
|
|
也可以和多行开始的第一行的第一个字符对齐:
|
|
Tab还是空格?(Tab Or Space?)
推荐使用空格缩进,Python3不允许table和space混合使用
每行最大长度(Maximum Line Length)
每行最多79个字符,
对于连续大段的文字(比如文档字符串(docstring)或注释),其结构上的限制更少,这些行应该被限制在72个字符长度内。
限制宽度是为了更好的进行代码review
一些团队会强烈希望行长度比79个字符更长。当代码仅仅只由一个团队维护时,可以达成一致让行长度增加到80到100字符(实际上最大行长是99字符),注释和文档字符串仍然是以72字符换行。
推荐使用圆括号、方括号、花括号的隐式续行,长行最好加上反斜杠区别续行
|
|
空行(Blank Line)
用两个空行隔离function和类
使用1个空行来分隔类中的方法(method)定义。
在函数内(尽量少地)使用空行使代码逻辑更清晰。
Imports
Imports应该分行写,而不是都写在一行
|
|
这样写也是可以的:
Imports应该写在代码文件的开头,位于模块(module)注释和文档字符串之后,模块全局变量(globals)和常量(constants)声明之前。
mports应该按照下面的顺序分组来写:
- 标准库imports
- 相关第三方imports
- 本地应用/库的特定imports
导入的时候推荐使用绝对路径导入,这样会更加清晰
变量
- 常量:大写+下划线
USER_CONSTANT 对于不会发生改变的全局变量,使用大写加下划线 - 私有变量 : 小写和一个前导下划线
_private_value
函数和方法
总体而言应该使用,小写和下划线
参考:
类
类使用驼峰式的命名,所有单词首字母大写其余字母小写
如:MimeTypes
对于基类而言,可以使用一个 Base 或者 Abstract 前缀
BaseCookie
AbstractGroup
https://www.python.org/dev/peps/pep-0008/#introduction
http://nanshu.wang/post/2015-07-04/
http://lmmsoft.github.io/blog/2012/01/23/python-%E4%BB%A3%E7%A0%81%E9%A3%8E%E6%A0%BCpep8/